#include <e32svr.h>
#include "MyTelephony_3rd.h"

CMyTelephony* CMyTelephony::NewLC()
{
    CMyTelephony* self = new ( ELeave ) CMyTelephony;
    CleanupStack::PushL( self );
    self->ConstructL( );
    return self;
}

CMyTelephony* CMyTelephony::NewL()
{
    CMyTelephony* self = CMyTelephony::NewLC( );
    CleanupStack::Pop( self );
    return self;
}

void CMyTelephony::GetIMEIL(TDes& aIMEI)
{
#ifdef _DEBUG
    _LIT(KDebugIMEI, "004601018693426");
    aIMEI = KDebugIMEI;
#else
    CMyTelephony* telephony = CMyTelephony::NewL( );
    telephony->GetPhoneId( );
    aIMEI = telephony->iPhoneIdV1.iSerialNumber;
    delete telephony;
#endif
}

void CMyTelephony::GetIMSIL(TDes& aIMSI)
{
#ifdef _DEBUG
    _LIT(KDebugIMSI, "000000000000111");
    aIMSI = KDebugIMSI;
#else
    CMyTelephony* telephony = CMyTelephony::NewL();
    telephony->GetSubscriberId();
    aIMSI = telephony->iSubscriberId.iSubscriberId;
    delete telephony;
#endif
}

void CMyTelephony::DoCancel()
{
    iTelephony->CancelAsync( iRequest );
}

void CMyTelephony::RunL()
{
    CActiveScheduler::Stop( );
}

CMyTelephony::~CMyTelephony()
{
    delete iTelephony;
}

CMyTelephony::CMyTelephony() :
    CActive( CActive::EPriorityStandard ), iPhoneIdV1Pckg( iPhoneIdV1 ), iSubscriberIdPckg( iSubscriberId )
{
    CActiveScheduler::Add( this );
}

void CMyTelephony::ConstructL()
{
    iTelephony = CTelephony::NewL( );
}

void CMyTelephony::GetPhoneId()
{
    Cancel( );
    iRequest = CTelephony::EGetPhoneIdCancel;
    iTelephony->GetPhoneId( iStatus, iPhoneIdV1Pckg );
    SetActive( );
    CActiveScheduler::Start( );
}

void CMyTelephony::GetSubscriberId()
{
    Cancel( );
    iRequest = CTelephony::EGetSubscriberIdCancel;
    iTelephony->GetSubscriberId( iStatus, iSubscriberIdPckg );
    SetActive( );
    CActiveScheduler::Start( );
}
